//思路:
/*
定义初始和max  截取数组求和 
判断后一个和与初始值大小 直到截取到数组末尾

*/

let arr = [1, 23, 45, 645, 22, 12, 4, 5, 7, 3, 2];
//求和函数
// function arrSum(array) {
//   return array.reduce((pre, cur) => {
//     return pre + cur;
//   });
// }

// //求连续n个数最大值
// function getArrSum(array, n) {
//   //初始左边界坐标
//   let left = 0;
//   //初始右边界坐标
//   let right = left + n;
//   //初始和
//   let max = arrSum(array.slice(left, right));

//   for (; right <= array.length; left++, right++) {
//     console.log(right);
//     let preSum = arrSum(array.slice(left, right));
//     if (preSum > max) {
//       max = preSum;
//     }
//   }
//   return max;
// }
// console.log(getArrSum(arr, 3));

//第二种纯循环方法
/*设置一个最左坐标和右坐标
设置初始和max = 0
*left = 0 ,right = left + n
*循环数组0~n项算出第一次和为fristsum
然后每一次循环 fristsum减去前一项加后一项 
判断fristsum和max大小 赋值给max
*/

function getArrSum2(array, n) {
  let fristsum = 0;
  let max = 0;
  for (let index = 0; index < array.length; index++) {
    if (index == 0) {
      for (let j = 0; j < n; j++) {
        max += array[j];
      }
      fristsum = max;
    } else {
      if (fristsum > max) {
        max = fristsum;
      }
      fristsum = fristsum - array[index - 1] + array[index - 1 + n];
    }
  }
  return max;
}

console.log(getArrSum2(arr, 3));
